iT邦幫忙

2026 iThome 鐵人賽

DAY 2
0
自我挑戰組

盯!視覺追蹤機器人 | ROS2打造追蹤機器人系列 第 2

Day 2|機器人系統好複雜!一次搞懂 ROS2、TurtleBot3 與 Gazebo

  • 分享至 

  • xImage
  •  

ROS2

一開始接觸 ROS2 時,我會很直覺地把它想成機器人的「大腦」,但更準確地說,ROS2 比較像是機器人各個程式模組之間的溝通系統

例如:

  • 相機負責取得影像
  • 影像處理程式負責分析畫面
  • 控制程式負責計算機器人要怎麼移動
  • 底盤負責真正執行移動指令

這些功能不一定全部寫在同一個程式裡,而 ROS2 就負責讓它們彼此交換資料與指令。

ROS2 中常見的幾個基本概念包括:Node、Topic、Publisher、Subscriber。

Node

可以把 Node 想成一個個獨立工作的程式,每個 Node 都有自己的工作。

例如:

  • 相機 Node
  • 影像處理 Node
  • 機器人控制 Node

Topic

Topic 可以想成資料傳遞的「頻道」,有點像不同 Node 之間共用的聊天室。

Publisher 把訊息發布到某個 Topic,而有訂閱這個 Topic 的 Subscriber 就能收到訊息。

Publisher / Subscriber

Publisher 負責發布資料,而 Subscriber 則負責訂閱資料。

Camera Node → 發布影像 → /camera/image_raw (Topic)→ 我的程式訂閱影像

之後我的程式處理完影像後,也可以再透過 ROS2 發出控制機器人的指令。

ROS1 和 ROS2 有什麼不同?

ROS2 是在 ROS1 的基礎上重新設計的新一代架構。我目前使用的是 ROS2 Humble,
因此這裡先簡單記錄幾個差異:

ROS1 ROS2
ROS Master 為核心 採 DDS 為基礎的分散式通訊
較早期的 ROS 架構 為較現代的機器人應用重新設計
ROS Noetic 是 ROS1 最後版本 Humble、Jazzy 等 ROS2 發行版

目前我還沒有深入研究 ROS1,因此這裡主要是先建立基本概念,之後如果有接觸到相關內容,再慢慢補充。

TurtleBot3

TurtleBot3 是一個常見的移動機器人平台,也有不同的版本與硬體配置。

我目前在模擬環境中使用的是 TurtleBot3 Waffle

可以把 TurtleBot3 想成這個專題裡機器人的「身體」。之後不管是相機取得畫面、控制輪子移動,或是讓機器人跟著目標移動,最後都需要透過這個移動平台來執行。

Gazebo 是什麼

Gazebo 可以簡單理解成一個讓機器人活動的「虛擬世界」。

它可以模擬現實中的一些物理環境,例如重力、碰撞、地面與障礙物,也能在裡面加入機器人與不同的感測器。因此能在虛擬世界先模擬一遍可能發生狀況。

它可以模擬:

  • 機器人
  • 相機與其他感測器
  • 物理碰撞
  • 地面與環境
  • 機器人的移動

如何結合三者

Gazebo 提供模擬環境 → TurtleBot3 在環境中活動 → ROS2 負責資料與指令交換 → 我的程式利用這些資料控制機器人

可以想成Gazebo 是世界,TurtleBot3 是機器人的身體,ROS2 是程式與機器人之間的溝通橋樑。而我自己寫的 Python 程式,則負責讀取資料、處理影像,並決定接下來要發出什麼控制指令。

為什麼先從模擬環境開始

如果一開始就把還沒測試過的程式直接放到現實中的機器人上執行,在還不熟悉硬體設備、控制方式,以及周遭環境影響的情況下,讓機器人直接在地面上移動,其實可能會產生不少風險。例如我在程式中的速度設定錯誤、方向判斷異常,或是感測器資料沒有正確讀取,都可能讓機器人突然往錯誤的方向移動,甚至發生碰撞。

因此在真正使用實體機器人之前,我會先利用模擬環境測試程式與控制邏輯。簡單來說,就是先讓它在電腦裡撞牆,總比真的撞到東西好。

透過模擬環境,可以先觀察機器人的移動方式、測試程式碼,也比較方便反覆修改與除錯。

目前我的開發環境

目前專題使用的開發環境如下:

  • OS: Ubuntu 22.04
  • ROS: ROS2 Humble
  • Robot: TurtleBot3 Waffle
  • Simulation: Gazebo Classic
  • Language: Python
  • Vision: OpenCV

實際做到什麼

目前先完成最基本的環境建立與測試:

  • 完成 Ubuntu 22.04、ROS2 Humble 與相關套件的環境設定
  • 啟動 TurtleBot3 的 Gazebo 模擬環境
  • 確認 TurtleBot3 能正常載入並在模擬環境中運作

現階段的目標還不是直接開始做視覺追蹤,而是先確認 ROS2、TurtleBot3 與 Gazebo 能夠正常運作,並理解它們彼此之間的關係。

NEXT

環境建立完成後,接下來才會開始實際操作 TurtleBot3,看看 ROS2 裡有哪些 Topic,以及機器人的相機資料到底是怎麼傳出來的。


上一篇
Day 1|為什麼我想做一台會「盯」著目標的機器人?
系列文
盯!視覺追蹤機器人 | ROS2打造追蹤機器人2
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言